/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Dao;

import Model.Cliente;
import conexao.Conecta;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.SelectItem;

/**
 *
 * @author ducomin
 */
public class ClienteDaoImpl implements ClienteDao{

    public String incluir(Cliente cli) {

        Conecta c = new Conecta();

            if ("sucesso".equals(c.getMsg())) {

                // Vamos preparar o comando SQL:
                String sql = "insert into APP.CLIENTE (nome,sexo) values ('"+cli.getNome()+"','"+cli.getSexo()+"')";
                try {
                    c.getStm().execute(sql);
                } catch (SQLException ex) {
                    return ex.getMessage();
                }

            } else {

            }
            return c.fechaConexao();
    }

    public String excluir(int codigo) {

        Conecta c = new Conecta();

            if ("sucesso".equals(c.getMsg())) {

                // Vamos preparar o comando SQL:
                String sql = "delete from APP.CLIENTE cli where cli.codigo="+codigo;
                try {
                    c.getStm().execute(sql);
                } catch (SQLException ex) {
                    return ex.getMessage();
                }

            } else {

            }
            return c.fechaConexao();
    }

    public String alterar(Cliente cli) {

        Conecta c = new Conecta();

            if ("sucesso".equals(c.getMsg())) {

                // Vamos preparar o comando SQL:
                String sql = "update APP.CLIENTE cli set"+
                         "          cli.nome='"+cli.getNome()+"',"+
                         "          cli.sexo='"+cli.getSexo()+"'"+
                         "    where cli.codigo="+cli.getCodigo();
                try {
                    c.getStm().execute(sql);
                } catch (SQLException ex) {
                    return ex.getMessage();
                }

            } else {

            }
            return c.fechaConexao();
    }

    public List<Cliente> getClientes() {

        List<Cliente> lista = new ArrayList<Cliente>();


        Conecta c = new Conecta();

            if ("sucesso".equals(c.getMsg())) {

                // Vamos preparar o comando SQL:
                String sql = "select cli.codigo, cli.nome, cli.sexo from APP.CLIENTE cli";

                // Definido o Statement, executamos o comando no banco de dados.
                ResultSet rs;
                try {

                    rs = c.getStm().executeQuery(sql);

                    // caso existir resultados, percorremos a lista.
                    while (rs.next()) {
                        //leitura dos campos da tabela em vari�veis
                        int cod = rs.getInt("codigo");
                        String tit = rs.getString("nome");
                        String sexo = rs.getString("sexo");
                        //Exibir os dados na tela.
                        Cliente cli = new Cliente(cod, tit, sexo);
                        lista.add(cli);
                    }


                } catch (SQLException ex) {
                    //ex.getMessage();
                }

            } else {
                //c.getMsg());
            }
            c.fechaConexao();


        return lista;

    }

    public Cliente getCliente(int codigo) {


        Cliente cli = null;

        Conecta c = new Conecta();

            if ("sucesso".equals(c.getMsg())) {

                // Vamos preparar o comando SQL:
                String sql = "select cli.codigo, cli.nome, cli.sexo from APP.CLIENTE cli where cli.codigo="+codigo;

                // Definido o Statement, executamos o comando no banco de dados.
                ResultSet rs;
                try {

                    rs = c.getStm().executeQuery(sql);


                    int cod = rs.getInt("codigo");
                    String tit = rs.getString("nome");
                    String sexo = rs.getString("sexo");
                    //Exibir os dados na tela.
                    cli = new Cliente(cod, tit, sexo);



                } catch (SQLException ex) {
                    //ex.getMessage();
                }

            } else {
                //c.getMsg());
            }
            c.fechaConexao();


        return cli;

    }

    public List<SelectItem> getListaCategoria() {


        List<SelectItem> lista = new ArrayList<SelectItem>();

        Conecta c = new Conecta();

            if ("sucesso".equals(c.getMsg())) {

                // Vamos preparar o comando SQL:
                String sql = "select cat.codigo, cat.nome from APP.CATEGORIA cat";

                // Definido o Statement, executamos o comando no banco de dados.
                ResultSet rs;
                try {

                    rs = c.getStm().executeQuery(sql);

                        while (rs.next()) {
                            int cod = rs.getInt("codigo");
                            String tit = rs.getString("nome");
                            lista.add(new SelectItem(cod, tit));
                    }


                } catch (SQLException ex) {
                    //ex.getMessage();
                } catch (Exception ex) {
                    System.out.print(ex.getMessage());
                }

            } else {
                //c.getMsg());
            }
            c.fechaConexao();


        return lista;

    }

}
